﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;

namespace ASKY
{
    public partial class menuusuario : Form
    {
        OleDbConnection con, con2;
        OleDbDataReader dr;
        int opcionboton = 0;
        int correcto=0;
        int contadoraciertos = 0,aciertosusuario,errorusuario;
        string usuario,contrasena;
        //public string Nombre;
        //private void menuusuario_load(object sender, EventArgs e);

        public menuusuario()
        {
            con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Joe\Dropbox\UNIVA\OCTAVO\DESARROLLO ORIENTADO A OBJETOS\ASKY\ASKY\ASKY\PREG&RESP.accdb");
            con2 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Joe\Dropbox\UNIVA\OCTAVO\DESARROLLO ORIENTADO A OBJETOS\ASKY\ASKY\ASKY\usuarios.accdb");
            InitializeComponent();
        }

        private void menuusuario_Load(object sender, EventArgs e)
        {
            GetRes();
            Seleccion_pregunta();
      
        }
        public void  Setusuario(string Nombre, string contrasenadb)
        {
            usuario = Nombre;
            contrasena = contrasenadb;
            }

        public void GetRes() {
            try
            {
                string h = "SELECT Rcorrectas, Rincorrectas FROM db_usuarios WHERE Nombre = '" + usuario + "'";
                OleDbCommand com = new OleDbCommand(h, con2);
                com.Connection.Open();
                dr = com.ExecuteReader();
                dr.Read();
                aciertosusuario = dr.GetInt16(0);
                errorusuario = dr.GetInt16(1);
                com.Connection.Close();
               }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con2.Close();
            }
           
        }
        
        public void Seleccion_pregunta() 
        { 
        string [] preguntas =new string [45];
        string [] respuestas = new string [45];
           int  i=0;
           opciona.Checked = false;
           opcionb.Checked = false;
           opcionc.Checked = false;
           
            try 
            { 
            string c = "SELECT * FROM preg_test_asky";
                OleDbCommand com = new OleDbCommand (c,con);
                com.Connection.Open();
                dr = com.ExecuteReader();

                if (dr.HasRows)
                {
                while (dr.Read())
                {
                preguntas[i]=dr[1].ToString();
                respuestas[i] = dr[2].ToString();
                i++;
                }
                
                }
                com.Connection.Close();
                
                int opcionpre = 0, opcionres=0, opcionresb=0, opcionresc=0;
                Random ran = new Random();
                opcionpre = ran.Next(0, 40);
                opcionres = ran.Next(0, 2);
                correcto = opcionres;

                while (opcionresb == opcionpre)
                    opcionresb = ran.Next(0, 40);
                while (opcionresc == opcionpre || opcionresc == opcionresb)
                    opcionresc = ran.Next(0, 40);
                caja_pregunta.Text = preguntas[opcionpre];

                switch (opcionres)
                {
                    case 0:
                        opcion_a_box.Text = respuestas[opcionpre];
                        break;
                    case 1:
                        opcion_b_box.Text = respuestas[opcionpre];
                        break;
                    case 2:
                        opcion_c_box.Text = respuestas[opcionpre];
                        break;
                    default:
                        MessageBox.Show("error");
                        break;
                }
                
                if (opcionres==0){
                    opcion_b_box.Text=respuestas[opcionresb];
                    opcion_c_box.Text = respuestas[opcionresc];
                }
                if (opcionres== 1) {
                    opcion_a_box.Text = respuestas[opcionresb];
                    opcion_c_box.Text = respuestas[opcionresc];
                }
                if (opcionres == 2)
                {
                    opcion_a_box.Text = respuestas[opcionresb];
                    opcion_b_box.Text = respuestas[opcionresc];
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }
        }

  
        internal static void show()
        {
            
        }

        private void opciona_CheckedChanged(object sender, EventArgs e)
        {
            opcionboton = 0;
            
        }

        private void opcionb_CheckedChanged(object sender, EventArgs e)
        {
            opcionboton = 1;
            
        }

        private void opcionc_CheckedChanged(object sender, EventArgs e)
        {
            opcionboton = 2;
            
        }

        private void respuesta_boton_Click(object sender, EventArgs e)
        {
            if (opcionboton == correcto)
            {
                contadoraciertos = contadoraciertos + 1;
                aciertosusuario = aciertosusuario + 1;
                MessageBox.Show("correcto!!!");
                MessageBox.Show("Llevas "+ contadoraciertos+" respuestas correctas" );
                ActualizaRespuestas();
                Seleccion_pregunta();
            }
            else
            {
                MessageBox.Show("Incorrecto");
                errorusuario = errorusuario + 1;
                ActualizaRespuestas();
                Seleccion_pregunta();
            }
        }
        
        
        private void Salir_Click(object sender, EventArgs e)
        {
            this.Hide();
        }
       
            
        
        public void ActualizaRespuestas() {

            try
            {
                string c = "UPDATE db_usuarios SET Rcorrectas= " + aciertosusuario +", Rincorrectas="+errorusuario+ " WHERE Nombre= '"+usuario+"'";
                OleDbCommand com = new OleDbCommand(c, con2);
                com.Connection.Open();
                com.ExecuteNonQuery();
                com.Connection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                con.Close();
            }

            if (contadoraciertos == 5)
            {
                menujuegos form1 = new menujuegos();

                form1.Show();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Ayuda help = new Ayuda();
            help.Show();
        }


    }
}
